// 一个文件夹或者一个文件只写一个特定的功能 
// 低耦合 高内聚
// 主要放置项目启动   app.js 入口  类似于大门  所有的执行文件都要先经过这里 
// 这个文件里面只写 启动服务器的代码 

//第一步 先安装 express     cnpm i  express -S 
// 第二步 引入  
// 第三步 调用 
// 第四步设置监听端口
const express=require('express')
const router=require('./router') //引入自定义的路由模块  加上对应的路径 




const app=express() 

//post 请求   获取post 请求参数   必须采用第三方插件   body-parser  
//第一步 安装  cnpm i body-parser -S 
//第二步 引入  
//第三步  使用 挂载 
const  bodyParser=require('body-parser')

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false })) 
// 如果设置为false 则调用内置模块的url以及string方法去解析
// 如果设置为true  则调用url  string 外加 qs 模块   一般情况下用不到
// parse application/json
app.use(bodyParser.json())  //如果post 请求数据传递过来的json 则用 bodyParser.json()





//可以控制代码的的顺序以及对这个代码执行之前以及执行之后需要的事件 中间件 
// app.use( '可以路径也可以啥不都写',(req,res,next)=>{
//    req 请求的数据 
//    res 返回的数据
//    next  放行    如果没有next  下面的代码都不走     
// })



//挂载静态资源文件 
// app.use(express.static('这个参数是文件夹的名字'))
app.use(express.static('public'))  
// 如果public 挂载在静态资源下 那么访问的时候不需要在写public



//引入登录的中间件 
let  loginMiddle=require('./middle')



// let  flag=true
app.use(loginMiddle.loginMiddle)










// app.use('第一个参数写路径','第二个参数对应的路由模块')
//第一个跟路径下自己匹配
app.use('/',router)

//第二种给路径加前缀  超级大项目需要进一步 低耦合 高内聚
// app.use('/users',router)
// app.use('/plays',router)








app.listen(3000,()=>{
    console.log('监听3000启动')
})

